1 '                     FILE TRANSFER PROGRAM
2 '               Written by Tracy L. Gustafson, M.D.
3 '              Round Rock, Texas. Version 3.0, 1984
4 ON ERROR GOTO 5000:CHAIN MERGE "EPIMRG",5
15 DIM D(1,1),CS(1,1),T(1),N$(1),X(1),X2(1),MD(1),SD(1),TR(1)
17 D1="What is the name of the DATAFILE you wish to ":D2="Which sample do you want to "
22 DATA "TRANSFERING SAMPLES FROM ONE DATAFILE TO ANOTHER",12,50
30 AF=0:AR=CSRLIN:PRINT TAB(10);D1;"modify?":PRINT TAB(17);"(REPLACE, ADD, or APPEND a sample to) "
35 LOCATE AR,64:INPUT "",FILE1$:EF=1:FILE$=FILE1$
40 ON ERROR GOTO 5020:OPEN FILE1$ FOR INPUT AS #1:INPUT #1,A,C:CC=C
45 PRINT:PRINT D1;:INPUT "retrieve a sample from?  ",FILE2$:EF=2:FILE$=FILE2$
50 OPEN FILE2$ FOR INPUT AS #2:INPUT #2,AZ,CZ:PRINT:AR=CSRLIN
55 PRINT TAB(5);"What is the SAMPLE NUMBER in ";FILE2$;" that you want to retrieve?"
60 SWAP A,AZ:AC=72:GOSUB 315:NZ=NS:SWAP A,AZ
65 FILE$=FILE1$:PRINT:IF AF=1 THEN 95 ELSE PRINT
70 PRINT "Do you want to:  1.)  REPLACE an existing data sample in ";FILE1$
75 PRINT TAB(18);"2.)  ADD this data sample to ";FILE1$;" as sample #";A+1
80 PRINT TAB(18);"3.)  APPEND this sample to an existing sample in ";FILE1$
85 PRINT:PRINT TAB(25);"Enter choice:   ";
90 INPUT "",ASUB:IF ABS(ASUB-2)>1 THEN BEEP:GOTO 90
95 AR=CSRLIN:AC=56:ON ASUB GOTO 100,105,110
100 AT=A:PRINT TAB(17);D2;"replace?";:GOSUB 315:NR=NS:GOTO 115
105 IF A<28 THEN NR=A+1:AT=A+1:GOTO 115 ELSE BEEP:AR=CSRLIN:LOCATE 25,3:PRINT FILE$;" already has the maximum number of samples allowed (28)";:LOCATE AR,1:GOTO 70
110 NR=A+1:AT=A+1:PRINT TAB(15);D2;"append to?";:GOSUB 315:NA=NS
115 PRINT:PRINT:COLOR 23:PRINT TAB(27);"TRANSFERING SAMPLE":COLOR CLR1
120 IF AF=1 THEN 135 ELSE ERASE D,CS,T,N$,X,X2,MD,SD,TR
125 DIM D(AT,2000/AT),CS(AT,2000/AT),T(AT),N$(AT),X(AT),X2(AT),MD(AT),SD(AT),TR(28)
130 GOSUB 4040
135 FOR T=1 TO NZ-1:INPUT #2,TR(T):NEXT
140 INPUT #2,T(NR):FOR T=NZ+1 TO AZ:INPUT #2,TR(T):NEXT
145 FOR T=1 TO NZ-1:FOR Z=1 TO CZ:INPUT #2,DZ:NEXT:NEXT
150 FOR Z=1 TO CZ:INPUT #2,D(NR,Z):NEXT
155 FOR T=NZ+1 TO AZ:FOR Z=1 TO CZ:INPUT #2,DZ:NEXT:NEXT
160 FOR T=1 TO NZ-1:FOR Z=1 TO TR(T):INPUT #2,CSZ:NEXT:NEXT
165 FOR Z=1 TO T(NR):INPUT #2,CS(NR,Z):NEXT
170 FOR T=NZ+1 TO AZ:FOR Z=1 TO TR(T):INPUT #2,CSZ:NEXT:NEXT
175 FOR T=1 TO NZ-1:INPUT #2,NZ$,XZ,X2Z,MDZ,SDZ:NEXT
180 INPUT #2,N$(NR),X(NR),X2(NR),MD(NR),SD(NR):CLOSE #2
185 IF ASUB<3 THEN 235 ELSE AT=T(NA)+1
190 T(NA)=T(NA)+T(NR):X(NA)=X(NA)+X(NR):X2(NA)=X2(NA)+X2(NR)
195 FOR AZ=1 TO T(NR):CC=CC+1:D(NA,CC)=D(NR,AZ):IF D(NA,CC)="" THEN 220 ELSE VC=VAL(D(NA,CC))
200 FOR Z=1 TO AT-1:VX=VAL(D(NA,CS(NA,Z))):IF VX<=VC THEN 210
205 FOR TZ=AT TO Z+1 STEP -1:CS(NA,TZ)=CS(NA,TZ-1):NEXT:GOTO 215
210 NEXT Z
215 CS(NA,Z)=CC:AT=AT+1
220 NEXT AZ:IF CC>CMAX THEN CMAX=CC
225 N=T(NA):MD(NA)=0:IF N>0 THEN IF N MOD 2=0 THEN MD(NA)=(VAL(D(NA,CS(NA,N/2)))+VAL(D(NA,CS(NA,N/2+1))))*.5 ELSE MD(NA)=VAL(D(NA,CS(NA,N/2+.5)))
230 SD(NA)=0:IF N>1 THEN IF X2(NA)>X(NA)*X(NA)/N THEN SD(NA)=SQR((X2(NA)-X(NA)*X(NA)/N)/(N-1))
235 PLAY "MB O3 T200 L16 GF#GF#GF#GF#GF#GF# L10 G.D O2 L7 BGD O1 L6 B L3 G"
240 CLS:PRINT:PRINT TAB(5);"A memory file has been constructed that ";:IF ASUB=3 THEN PRINT "APPENDS "; ELSE PRINT "ADDS ";
245 PRINT "sample";NZ;"FROM ";FILE2$;:IF ASUB=3 THEN PRINT TAB(25);"TO sample";NA;"IN "; ELSE PRINT TAB(18);"TO ";
250 PRINT FILE1$;
255 IF ASUB=1 THEN PRINT "   (REPLACING sample number";NR;")":GOTO 270 ELSE IF ASUB=2 THEN PRINT "   (NEW sample number =";NR;")":GOTO 270
260 PRINT:PRINT:PRINT "   Do you want to APPEND data to another sample in datafile ";FILE1$;:INPUT A$
265 IF A$="y" OR A$="Y" THEN CC=C:AF=1:GOTO 45 ELSE IF A$<>"n" AND A$<>"N" THEN BEEP:GOTO 260
270 PRINT:PRINT TAB(10);"How do you want to SAVE this modified datafile to disk:"
275 PRINT:PRINT TAB(20);"1.)  Under the filename ";FILE1$;"
280 PRINT TAB(20);"2.)  Under a NEW filename."
285 PRINT TAB(20);"3.)  CANCEL file modification.":PRINT
290 PRINT TAB(26);:INPUT "Enter choice:  ",BSUB:AR=CSRLIN:IF ABS(BSUB-2)>1 THEN BEEP:GOTO 290 ELSE IF BSUB=3 THEN 305
295 IF ASUB=3 THEN C=CMAX ELSE A=AT:IF T(NR)>C THEN C=T(NR)
300 IF BSUB=2 THEN AR=CSRLIN:GOSUB 4100 ELSE GOSUB 4110
305 LOCATE 25,15:INPUT;"Do you want to perform another FILE TRANSFER?  ",A$:IF A$="y" OR A$="Y" THEN 20
310 LOCATE 23,1:END
315 LOCATE AR,AC:INPUT;"",NS:IF NS>0 AND NS<=A THEN RETURN ELSE BEEP:LOCATE 25,22:PRINT FILE$;" has only";A;"samples.";:LOCATE AR,AC:PRINT "     ":GOTO 315
5000 BEEP:IF ERR<>53 AND ERR<>71 THEN 5010 ELSE LOCATE 10,10:PRINT "Please place EPISTAT in drive A: (or other default).":PRINT TAB(25);"Press any key to continue:"
5005 A$=INKEY$:IF A$="" THEN 5005 ELSE RESUME
5010 ON ERROR GOTO 0:END
5032 IF EF=1 THEN RESUME 30 ELSE IF EF=2 THEN RESUME 45
